package co.inventario.presentacion;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import co.inventario.entidad.CiudadDTO;
import co.inventario.entidad.DepartamentoDTO;
import co.inventario.modelo.fachada.CiudadFachada;

@ManagedBean
public class CiudadBean {

	CiudadDTO ciudadDTO;
	ArrayList<CiudadDTO> ciudadDTOlista;
	List<CiudadDTO> ciudadFilter;
	
	

	
	public List<CiudadDTO> getCiudadFilter() {
		return ciudadFilter;
	}

	
	public void setCiudadFilter(List<CiudadDTO> ciudadFilter) {
		this.ciudadFilter = ciudadFilter;
	}

	public CiudadBean() {
		ciudadDTO = new CiudadDTO();
		DepartamentoDTO departamentoDTO = new DepartamentoDTO();
		ciudadDTO.setDepartamentoDTO(departamentoDTO);
		refrescarTablaCiudades();
	}

	public CiudadDTO getCiudadDTO() {
		return ciudadDTO;
	}

	public void setCiudadDTO(CiudadDTO ciudadDTO) {
		this.ciudadDTO = ciudadDTO;
	}

	public ArrayList<CiudadDTO> getCiudadDTOlista() {
		return ciudadDTOlista;
	}

	public void setCiudadDTOlista(ArrayList<CiudadDTO> ciudadDTOlista) {
		this.ciudadDTOlista = ciudadDTOlista;
	}

	private void refrescarTablaCiudades() {
		try {
			CiudadFachada ciudadFachada = new CiudadFachada();
			ciudadDTOlista = ciudadFachada.consultarTodo();
		} catch (Exception exception) {
			System.out.println("Error producido al consultar las ciudades en el Bean: " + exception.getMessage());
		}
	}

	public void crear() {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			if (ciudadDTO.getNvNombreCiudad() == null || "".equals(ciudadDTO.getNvNombreCiudad().trim())) {
				context.addMessage(null, new FacesMessage("error ", "El campo nombre de la ciudad esta vacio" + ciudadDTO.getNvNombreCiudad()));
			} else {
				CiudadFachada ciudadFachada = new CiudadFachada();
				ciudadFachada.crear(ciudadDTO);
				refrescarTablaCiudades();
				context.addMessage(null, new FacesMessage("succesfull", "el campo se ha creado con exito : " + ciudadDTO.getNvNombreCiudad()));
			}
		} catch (Exception exc) {
			context.addMessage(null, new FacesMessage("Error", "se ha producido un error - el error es  : " + exc.getMessage()));
		}
	}

	public void consultartodo() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			if (ciudadDTO.getInCodigoCiudad() == 0) {
				contexto.addMessage(null, new FacesMessage("Error", "El campo no puede estar vacio"));
			} else {
				refrescarTablaCiudades();
			}
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}

	public void actualizar() {
		FacesContext contexto = FacesContext.getCurrentInstance();
		try {
			CiudadFachada ciudadFachada = new CiudadFachada();
			ciudadFachada.actualizar(ciudadDTO);
			refrescarTablaCiudades();
			contexto.addMessage(null, new FacesMessage("succesfull", "el campo se ha Actualizado con exito : " + ciudadDTO.getNvNombreCiudad()));
		} catch (Exception excepcion) {
			contexto.addMessage(null, new FacesMessage("Error", "Se ha producido un error al consultar el registro: " + excepcion.getMessage()));
		}
	}
}
